package controleur;

import modele.AbstractModel;

/**
 * Implemente le DP commandes : 
 * Commande qui supprime une livraison dans une tournee deja calculee
 */
public class GenFdRCmd_SuppressionDansTournee extends AbstractCommande{

	// Identifiant de l'intersection correspondant a la livraison a supprimer
	private int lidLivraison;
	// Identifiant de l'intersection correpondant a la livraison qui precede la livraison supprimee
	private int lidLivraisonPrec;
	// Index de la plage horaire dans laquelle etait prevue la livraison supprimee
	private int lindexPH;
	// Receveur de la commande : le modele
	private AbstractModel modele;
	
	/**
	 * Constructeur de la classe : construit une nouvelle commande
	 * @param leModele receveur de la commande : le modele qui sera affecte
	 * @param idLivraison identifiant de la livraison a supprimer
	 * @param indexPH index de la plage horaire dans laquelle etait prevue la livraison supprimee
	 */
	public GenFdRCmd_SuppressionDansTournee(AbstractModel leModele, int idLivraison,
			int indexPH) {
		lidLivraison=idLivraison;
		lindexPH=indexPH;
		modele=leModele;
	}

	/**
	 * Effectue la commande
	 */
	@Override
	public void Do() {
		lidLivraisonPrec=modele.supprimerLivraisonApresGen(lidLivraison);
	}

	/**
	 * Annule la commande
	 */
	@Override
	public void Undo() {
		modele.ajouterLivraisonApresGen(lidLivraison, lidLivraisonPrec, lindexPH);
	}

}
